
#ifndef PERPENDICULAR_H_
#define PERPENDICULAR_H_
#include <iostream>
#include <typeinfo>
#include "Constraint.h"


namespace common {

class Perpendicular: public common::Constraint {

	Vector* vm;
	Vector* vn;

	void setVectorM(Vector* m);
	void setVectorN(Vector* n);

public:
	Perpendicular(int id,Point* k,Point* l,Vector* m,Vector* n);

	ublasVector getValue() throw(MyException);
	ublasMatrix getJacobianOnPoint(Point* p) throw(MyException);
	ublasMatrix getHessian(Point* s, Point* r) throw(MyException);
	bool isHessian() const;

	Vector* getVectorM(void);
	Vector* getVectorN(void);
	std::string toString(void);
	virtual ~Perpendicular();
};

}

#endif /* PERPENDICULAR_H_ */
